package com.huahang.fashionpress.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.huahang.fashionpress.model.Cart;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.sql.Date;
import java.util.List;

/**
 * @Author: 阿俊哥
 * @Date: 2019/8/20 15:32
 * @Version 1.0
 *
 * 更新
 * @author : 王翰聪
 * @since : 209/08/25
 * @version : 1.1
 * 添加了根据用户id 查询购物车的方法
 * 添加了购物车删除一个商品 修改一个商品数量 清空购物车 查询该用户所有商品列表的方法
 */
@Repository
public interface CartMapper extends BaseMapper<Cart> {

    /**
     * 分页查询用户购物车内商品方法
     * @param userID
     * @param currIndex
     * @param pageSize
     * @return
     */
    @Select("select * from t_cart where user_id=#{userID} limit #{currIndex}, #{pageSize}")
    List<Cart> selectCartListByUserID(Integer userID, int currIndex, int pageSize);

//    @Select("select * from t_cart where user_id=#{userID}")
//    List<Cart> selectCartListByUserID(Integer userID);

    @Select("select * from t_cart where user_id=#{userID} and product_id=#{productID}")
    Cart selectCartByUserIDAndProductID(Integer userID, String productID);

    /**
     * 删除一条商品记录方法
     * @param userID
     * @param productID
     * @return
     */
    @Delete("delete from t_cart where product_id=#{productID} and user_id=#{userID}")
    int deleteProductByProductID(Integer userID, String productID);

    @Delete("delete from t_cart where user_id=#{userID}")
    int cartClear(Integer userID);

    /**
     * 添加一个购物车商品方法
     * @param productID
     * @param userID
     * @param productQuantity 商品数量
     * @param cartDate 添加时间
     * @return
     */
    @Insert("insert into t_cart (product_id, user_id, product_quantity, cart_date) values (#{productID}, #{userID}, #{productQuantity}, #{cartDate})")
    int insertProduct(String productID, Integer userID, Integer productQuantity, Date cartDate);

    /**
     * 修改购物车中商品数量方法
     * @param productQuantity 商品数量
     * @param productID 商品id
     * @param userID
     * @return
     */
    @Update("update t_cart set product_quantity=#{productQuantity} where product_id=#{productID} and user_id=#{userID}")
    int updateProductQuantity(Integer productQuantity, String productID, Integer userID);
}
